package util;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import junit.framework.Assert;

import org.junit.Test;

public class TestUtil {

	@Test
	public void testPhoneNumbers() {
		assertTrue(Util.isValidPhoneNumber("412-412-4122"));
		assertTrue(Util.isValidPhoneNumber("1-412-412-4122"));
		assertTrue(Util.isValidPhoneNumber("412 412 4122"));
		assertTrue(Util.isValidPhoneNumber("4124124122"));
		assertFalse(Util.isValidPhoneNumber("412-412-412-4122"));
		assertFalse(Util.isValidPhoneNumber("abcd"));
		assertFalse(Util.isValidPhoneNumber("412-412-412"));
		assertTrue(Util.isValidPhoneNumber("412-692-0637"));
	}

	@Test
	public void testMoney()
	{
		assertTrue(Util.isValidMoneyAmount("123"));
		assertTrue(Util.isValidMoneyAmount("0"));
		assertTrue(Util.isValidMoneyAmount("0.0"));
		assertTrue(Util.isValidMoneyAmount("0.00"));
		assertFalse(Util.isValidMoneyAmount("0.000"));
		assertFalse(Util.isValidMoneyAmount("123."));
		assertFalse(Util.isValidMoneyAmount("-123"));
	}
	
	@Test
	public void testZip()
	{
		assertTrue(Util.isValidZip("10010"));
	}
	
	@Test
	public void testUserName()
	{
		assertTrue(Util.isValidUsername("12345"));
		assertTrue(Util.isValidUsername("_12345"));
		assertFalse(Util.isValidUsername("12345%$"));
	}
	
	@Test(expected=ArithmeticException.class)
	public void testLongOverflow()
	{
		long big = Long.MAX_VALUE -5;
		long small = 1000;
		Util.addAndCheck(small, big);
	}
	
	@Test
	public void testNormalLongAdd()
	{
		long big = 100000;
		long small = 10000;
		Assert.assertEquals(110000,Util.addAndCheck(big, small));
		System.out.println(Long.MAX_VALUE);
	}
}
